package com.zues.thread.lock.eight;

/**
 * 题目：8锁案例说明
 * 口诀： 线程、操作、资源类
 * synchronized锁的为当前对象(默认为this)，static为当前类Class
 * JAVA中每一个对象都可以作为锁，具体表现为以下3中形式：
 * 对于普通的同步方法：锁的是当前实例对象
 * 对于静态同步方法：锁的是当前类的class对象
 * 对于同步代码块：锁的是synchronized括号里配置的对象
 *
 * 1 标准访问有ab两个线程，问先打印邮件还是短信:    邮件-》短信
 * 2 sendMail中加入暂停3秒，问先打印邮件还是短信:    邮件-》短信
 * 3 添加到一个普通的hello方法，先打印邮件还是hello:    hello-》邮件
 * 4 有两部手机，一个手机可以发短信，一个手机可以发邮件，先打印邮件还是短信:   短信-》邮件
 * 5 有两个静态同步方法，有一部手机，问先打印邮件还是短信:  邮件-》短信
 * 6 有两个静态同步方法，有2部手机，问先打印邮件还是短信:  邮件-》短信
 * 7 有1个静态同步方法，有一个普通方法，有1部手机，问先打印邮件还是短信:  短信-》邮件
 * 8 有1个静态同步方法，有一个普通方法，有2部手机，问先打印邮件还是短信:  短信-》邮件
 *
 *
 * @author zues
 * @date 12/22/2024 10:06 下午
 */
public class Lock8Demo1 {


    public static void main(String[] args) {
        Phone phone = new Phone();
        Phone phone2 = new Phone();

        new Thread(()->{
            phone.sendMail();
        },"a").start();

        //暂停毫秒，保证a线程先启动
        try {
           Thread.sleep(200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        new Thread(()->{
//            phone.sendSMS();
//            phone.hello();
            phone2.sendSMS();
        },"b").start();
    }

}
